const dotenv = require('dotenv');
const express = require('express');
const app = express();
const cors = require('cors');
const UserRouter = require('./src/routes/user');
const AdminRouter = require('./src/routes/admin');
const UploadRouter = require('./src/routes/qiniu');
const connectDB = require('./src/config/db.config');

// 环境变量加载（优先处理）
dotenv.config();

// 数据库连接（异步操作需确认完成）
connectDB();

// 在app.js中添加路由校验中间件
app.use((req, res, next) => {
  console.log(`[路由追踪] ${req.method} ${req.path}`);
  next();
});

//允许所有源访问
app.use(cors());

// 统一CORS配置（开发环境全开放，生产环境按需调整）120.79.170.227 localhost
app.use(cors({
  origin: ['http://120.79.170.227'],
  methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
  allowedHeaders: ['Content-Type', 'Authorization', 'X-Requested-With'],
  credentials: true
}));

// 中间件（必须在路由前加载）
app.use(express.json());

// 调试：打印所有注册路由
app.use((req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.originalUrl}`);
  next();
});

// 路由挂载
app.use('/api/user', UserRouter);
app.use('/api/admin', AdminRouter);
app.use('/api/public', UploadRouter);

// 错误处理（必须放在路由后）
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ error: '服务器内部错误' });
});

// 服务启动
const PORT = process.env.PORT || 5000;
// const server = app.listen(PORT, '0.0.0.0',() => {
//   console.log(`🚀 服务已启动在 http://0.0.0.0:${PORT}`);
// });
const server = app.listen(PORT, '0.0.0.0', () => {
  console.log(`🚀 服务已启动在 http://localhost:${PORT}`);
});

// 热更新处理（开发环境）
if (process.env.NODE_ENV !== 'production') {
  process.on('SIGTERM', () => {
    server.close(() => {
      console.log('进程已终止');
    });
  });
}